Many current multimedia applications, such as streaming video and audio players, were originally designed to operate from attached local storage (e.g., CD or hard disk) or over a high-quality low latency network (e.g., a lightly loaded local area network or LAN). However, when running over a lower quality network such as a wide-area network (WAN), packet loss and latency resulting from network congestion often impair the real-time operation of a multimedia application enough to provide a poor user experience, often described as poor Quality of Service (QoS). For example, video frames may be lost, or video and audio synchronization may be corrupted, resulting in poor quality multimedia performance.
To address these issues, some current multimedia applications have been developed to adapt their transmission rates according to network conditions. One approach alters transmission rate in response to the detection of lost packets. Specifically, for real time applications, such as streaming multimedia, a Real Time Protocol (RTP) has been specified with an associated Real Time Control Protocol (RTCP) to monitor QoS and convey participant information based on lost packet detection. Another approach increases the number of packets that are buffered in networking equipment in the hope of avoiding or minimizing data loss. Forward Error Correction may also be employed with these enhanced buffering schemes. Yet another approach estimates the expected bandwidth of “bottleneck” links and attempts to statically set the transmission rate accordingly.
However, these existing approaches are inadequate. Because the first approach relies on detection of lost packets, any attempt to correct the problems is too late to avoid a poor user experience from initial packet loss. The second approach of increasing buffering replaces data loss with increased latency introduced by large send queues. Furthermore, the second approach is problematic for devices having limited buffer memory, such as an audio/visual mobile phone or watch. The third approach fails to address inherently variable bandwidth bottlenecks (such as a wireless link) or dynamic congestion changes introduced by multiple applications sharing the available bandwidth at the bottleneck.
In addition, no existing approach specifically addresses reactive bandwidth control, responsive to incipient congestion for real-time communications, which are commonly employed in multimedia applications.